﻿<!DOCTYPE html>
<html>

<head>
	<meta charset=utf-8>
	<title>実行</title>
	<link href="../base.css" rel="stylesheet" type="text/css" />
</head>

<body>
	<div class="main">
		<h1>実行</h1>
		
		<h2>概要</h2>
		<p>
ここでは、どのようにしてエフェクトを表示するかを説明します。
		</p>

		<p>
DirectX9のサンプル(VisualC++2013)「RuntimeSample/DirectX9.sln」
		</p>
		
		<p>
DirectX11のサンプル(VisualC++2013)「RuntimeSample/DirectX11.sln」
		</p>

		<h2>初期化処理</h2>
		<p>
描画管理クラスとエフェクト管理クラスのインスタンスの生成・初期化します。<br>
DirectX、もしくはOpenGLの初期化を行った後に行う必要があります。
		</p>

		<h3>DirectX9の場合</h3>
<pre>
<code>
// 描画管理インスタンスの生成
::EffekseerRenderer::Renderer* renderer = ::EffekseerRendererDX9::Renderer::Create( LPDIRECT3DDEVICE9, 最大表示スプライト数 );
// サウンド管理インスタンスの生成
::EffekseerSound::Sound* sound = ::EffekseerSound::Sound::Create( IXAudio2*, モノラル再生用ボイス数, ステレオ再生用ボイス数 );
// エフェクト管理用インスタンスの生成
::Effekseer::Manager* manager = ::Effekseer::Manager::Create( 最大表示スプライト数 );
</code>
</pre>

		
		<h3>DirectX11の場合</h3>
<pre>
<code>
// 描画管理インスタンスの生成
::EffekseerRenderer::Renderer* renderer = ::EffekseerRendererDX11::Renderer::Create( ID3D11Device*, ID3D11DeviceContext*, 最大表示スプライト数 );
// サウンド管理インスタンスの生成
::EffekseerSound::Sound* sound = ::EffekseerSound::Sound::Create( IXAudio2*, モノラル再生用ボイス数, ステレオ再生用ボイス数 );
// エフェクト管理用インスタンスの生成
::Effekseer::Manager* manager = ::Effekseer::Manager::Create( 最大表示スプライト数 );
</code>
</pre>

		<h3>OpenGLの場合</h3>
<pre>
<code>
// 描画管理インスタンスの生成
::EffekseerRenderer::Renderer* renderer = ::EffekseerRendererGL::Renderer::Create( 最大表示スプライト数 );
// エフェクト管理用インスタンスの生成
::Effekseer::Manager* manager = ::Effekseer::Manager::Create( 最大表示スプライト数 );
</code>
</pre>

	<p>
	OpenSLは現在未対応です。
	</p>		
		<h2>設定</h2>
		<p>
初期化の後、描画方法、データ読込方法、座標系等を設定します。
		</p>

<pre>
<code>
// 描画方法を指定します。独自に拡張することもできます。
manager->SetSpriteRenderer( renderer->CreateSpriteRenderer() );
manager->SetRibbonRenderer( renderer->CreateRibbonRenderer() );
manager->SetRingRenderer( renderer->CreateRingRenderer() );
manager->SetTrackRenderer( renderer->CreateTrackRenderer() );
manager->SetModelRenderer( renderer->CreateModelRenderer() );

// テクスチャ画像の読込方法の指定(パッケージ等から読み込む場合拡張する必要があります。)
manager->SetTextureLoader( renderer->CreateTextureLoader() );

// サウンド再生用インスタンスの指定
manager->SetSoundPlayer( sound->CreateSoundPlayer() );

// サウンドデータの読込方法の指定(圧縮フォーマット、パッケージ等から読み込む場合拡張する必要があります。)
manager->SetSoundLoader( sound->CreateSoundLoader() );

// 座標系の指定(RHで右手系、LHで左手系)
manager->SetCoordinateSystem( Effekseer::CoordinateSystem::RH );
</code>
</pre>

		<h2>エフェクトの読込と再生</h2>
		<p>
エフェクトをファイルから読み込みます。パッケージ等からファイルを読み込みたい場合、データ読込方法の指定にて読込方法を拡張する必要があります。
		</p>
		<p>
なお、読み込み時の文字コードはUTF16です。Windowsの場合はwchar_t、
他OSの場合は、「::Effekseer::ConvertUtf8ToUtf16」を使用してUTF8からUTF16に変更
C++11の場合、char16_tも使用できます。
		</p>
<pre>
<code>
// エフェクトの読込
Effekseer::Effect* effect = Effekseer::Effect::Create( manager, 読込先パス );
// エフェクトの再生
Effekseer::Handle handle = manager->Play( effect, 初期位置 );
</code>
</pre>

		<h2>更新処理</h2>
		<p>
再生中のエフェクトのパラメーターを変更しつつ、更新を行います。
		</p>
<pre>
<code>
// 投影行列の更新
renderer->SetProjectionMatrix( ::Effekseer::Matrix44 );
// カメラ行列の更新
renderer->SetCameraMatrix( ::Effekseer::Matrix44 );
// 3Dサウンド用リスナー設定の更新
sound->SetListener( リスナー位置, 注目点, 上方向ベクトル );
// 再生中のエフェクトの移動等(::Effekseer::Manager経由で様々なパラメーターが設定できます。)
manager->AddLocation( handle, ::Effekseer::Vector3D );
// 全てのエフェクトの更新
manager->Update();
</code>
</pre>

		<h2>描画処理</h2>
		<p>
描画を行います。DirectX9の場合、BeginSceneとEndSceneの間で実行してください。
		</p>
<pre>
<code>
renderer->BeginRendering();
manager->Draw();
renderer->EndRendering();
</code>
</pre>

		<h2>解放処理</h2>
		<p>
解放処理を行います。DirextX、OpenGL自体を解放する前に行う必要があります。
		</p>
<pre>
<code>
// エフェクトを解放します。再生中の場合は、再生が終了した後、自動的に解放されます。
ES_SAFE_RELEASE( effect );
// エフェクト管理用インスタンスを破棄
manager->Destroy();
// サウンド用インスタンスを破棄
sound->Destroy();
// 描画用インスタンスを破棄
renderer->Destory();
</code>
</pre>


	</div>
</body>

</html>